#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
信令服务器启动脚本

使用方法:
    python start_signaling_server.py [--host HOST] [--port PORT] [--zmq-port ZMQ_PORT]

示例:
    python start_signaling_server.py --host 0.0.0.0 --port 5000 --zmq-port 5555
"""

import sys
import os
import argparse

# 添加signaling_server目录到Python路径
sys.path.insert(0, os.path.join(os.path.dirname(__file__), 'signaling_server'))

# 直接导入模块
import signaling_server.app as app_module
from signaling_server.app import app, socketio

def main():
    parser = argparse.ArgumentParser(description='WebRTC信令服务器')
    parser.add_argument('--host', default='0.0.0.0', help='服务器地址 (默认: 0.0.0.0)')
    parser.add_argument('--port', type=int, default=5000, help='HTTP服务端口 (默认: 5000)')
    parser.add_argument('--zmq-port', type=int, default=5555, help='ZMQ服务端口 (默认: 5555)')
    parser.add_argument('--debug', action='store_true', help='启用调试模式')
    
    args = parser.parse_args()
    
    print("="*50)
    print("WebRTC P2P Demo - 信令服务器")
    print("="*50)
    print(f"HTTP服务地址: http://{args.host}:{args.port}")
    print(f"ZMQ服务地址: tcp://{args.host}:{args.zmq_port}")
    print(f"调试模式: {'开启' if args.debug else '关闭'}")
    print("="*50)
    print("")
    print("使用说明:")
    print("1. 在浏览器中访问 http://localhost:5000 打开前端页面")
    print("2. 启动远程服务器: python start_remote_server.py")
    print("3. 在前端页面点击'连接信令服务器'和'开始通话'")
    print("")
    print("按 Ctrl+C 停止服务器")
    print("="*50)
    
    try:
        # 初始化ZMQ
        app_module.init_zmq(args.zmq_port)
        
        # 启动ZMQ消息处理线程
        app_module.start_zmq_handler()
        
        # 启动Flask-SocketIO服务器
        socketio.run(
            app, 
            host=args.host, 
            port=args.port, 
            debug=args.debug,
            use_reloader=False  # 避免重载时ZMQ连接问题
        )
        
    except KeyboardInterrupt:
        print("\n收到中断信号，正在停止服务器...")
    except Exception as e:
        print(f"服务器启动失败: {e}")
        sys.exit(1)
    finally:
        print("信令服务器已停止")

if __name__ == '__main__':
    main()